{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "710e0e3f-4bba-42e2-b863-6911294b01ea",
   "metadata": {},
   "outputs": [],
   "source": [
    "var openDigger = require('../../src/open_digger');\n",
    "var now = new Date();\n",
    "var res = now.setMonth(now.getMonth() - 1); // handle new year\n",
    "var startYear = 2022, startMonth = 1, endYear = now.getFullYear(), endMonth = now.getMonth() + 1;\n",
    "var forEveryMonth = f => {\n",
    "    var index = 0;\n",
    "    for (var y = startYear; y <= endYear; y++)\n",
    "        for (var m = (y === startYear ? startMonth : 1); m <= (y === endYear ? endMonth : 12); m++)\n",
    "            f(y, m, index++);\n",
    "};"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e879e7a8-87d8-48b8-89a1-bcc02793b306",
   "metadata": {},
   "source": [
    "# X-lab Community Analysis Report\n",
    "\n",
    "This notebook is used to track the members active and influence status in X-lab community.\n",
    "\n",
    "The result can be used for community measurement and incentive.\n",
    "\n",
    "The start date for this report is 2022-01-01 and the end date is up-to-date."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4776b302-9508-43f7-b636-03259e4d78d0",
   "metadata": {},
   "source": [
    "## Overview\n",
    "\n",
    "This part is the history OpenRank trending of all projects in X-lab community."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "c38d4170-fa00-43da-a800-51b4f5a4dd68",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "┌─────────┬─────────────┬─────────────────────────────────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬──────────┬──────────┬──────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐\n",
      "│ (index) │     id      │                name                 │ Y2022M1 │ Y2022M2 │ Y2022M3 │ Y2022M4 │ Y2022M5 │ Y2022M6 │ Y2022M7 │ Y2022M8 │ Y2022M9 │ Y2022M10 │ Y2022M11 │ Y2022M12 │ Y2023M1 │ Y2023M2 │ Y2023M3 │ Y2023M4 │ Y2023M5 │ Y2023M6 │ Y2023M7 │ Y2023M8 │ Y2023M9 │\n",
      "├─────────┼─────────────┼─────────────────────────────────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼──────────┼──────────┼──────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤\n",
      "│    0    │ '259035151' │     'hypertrons/hypertrons-crx'     │  3.09   │  3.11   │  3.54   │    3    │  2.93   │  5.85   │  6.49   │  4.93   │  5.55   │   10.2   │   12.1   │   7.37   │  5.22   │  4.39   │  10.61  │    9    │  8.52   │  6.44   │  6.36   │  8.54   │  10.87  │\n",
      "│    1    │ '288431943' │       'X-lab2017/open-digger'       │  3.52   │  3.55   │  4.49   │  2.69   │  2.88   │  5.59   │  6.47   │  6.01   │  7.16   │   9.32   │  11.82   │  15.16   │  15.38  │  32.22  │  16.17  │  13.55  │  13.42  │  10.05  │  10.56  │  9.83   │  8.59   │\n",
      "│    2    │ '470364208' │     'X-lab2017/open-wonderland'     │    0    │    0    │  0.88   │  1.53   │  1.64   │  1.51   │  4.36   │  5.05   │  4.06   │   1.53   │   2.86   │   3.46   │  2.45   │  2.18   │  5.14   │  5.81   │   3.5   │  2.46   │  7.16   │    5    │  5.32   │\n",
      "│    3    │ '461374162' │      'X-lab2017/open-research'      │    0    │    0    │  1.43   │  2.87   │  6.41   │  6.14   │  2.89   │  2.45   │  6.56   │   5.99   │   4.4    │   2.87   │  1.42   │  1.21   │  0.61   │   0.6   │  2.44   │  5.73   │  3.49   │   1.6   │  1.84   │\n",
      "│    4    │ '639923640' │     'X-lab2017/gi-assets-xlab'      │    0    │    0    │    0    │    0    │    0    │    0    │    0    │    0    │    0    │    0     │    0     │    0     │    0    │    0    │    0    │    0    │  0.63   │  2.71   │  2.71   │  2.31   │  0.99   │\n",
      "│    5    │ '508325123' │    'OpenEduTech/EduTechResearch'    │    0    │    0    │    0    │    0    │    0    │    0    │   0.7   │  0.61   │  2.62   │   3.07   │   4.62   │   3.2    │  2.72   │  2.32   │  1.93   │  1.64   │  1.39   │  1.97   │  1.67   │  1.42   │  0.85   │\n",
      "│    6    │ '572845686' │         'X-lab2017/od-api'          │    0    │    0    │    0    │    0    │    0    │    0    │    0    │    0    │    0    │    0     │    0     │   1.86   │   0.8   │  0.56   │  1.04   │   1.8   │  1.53   │   1.3   │   1.1   │  0.94   │   0.8   │\n",
      "│    7    │ '467768946' │        'X-lab2017/open-perf'        │    0    │    0    │  1.47   │  1.19   │   0.6   │  0.83   │  0.47   │  0.68   │  0.58   │   0.32   │   0.49   │   0.42   │  0.36   │   0.3   │  0.48   │  0.41   │  0.35   │  0.71   │  0.79   │  1.56   │  0.78   │\n",
      "│    8    │ '428629051' │       'X-lab2017/open-galaxy'       │  1.97   │  1.67   │  1.42   │  1.21   │  1.03   │  0.87   │  0.74   │  0.63   │  0.54   │   0.46   │   0.39   │   0.33   │  0.28   │  1.93   │  1.73   │  1.47   │  1.25   │  1.06   │   0.9   │  0.77   │  0.65   │\n",
      "│    9    │ '471252840' │    'X-lab2017/open-leaderboard'     │    0    │    0    │  0.83   │  1.04   │  0.47   │  1.75   │  1.54   │  1.31   │  1.11   │   0.88   │   0.43   │   0.37   │  0.31   │  3.07   │  2.36   │  1.67   │  2.19   │  2.53   │  3.01   │   1.4   │  0.57   │\n",
      "│   10    │ '221379769' │       'hypertrons/hypertrons'       │   0.3   │  0.26   │  0.13   │  0.61   │   0.5   │  0.42   │  0.36   │  0.34   │  0.29   │   0.25   │   0.21   │   0.26   │  0.31   │  0.26   │  0.22   │  1.24   │  1.06   │   0.9   │  0.76   │  0.65   │  0.55   │\n",
      "│   11    │ '533339106' │       'OpenEduTech/OpenEduKG'       │    0    │    0    │    0    │    0    │    0    │    0    │    0    │    0    │  2.47   │   1.87   │   1.39   │   1.18   │    1    │  0.85   │  0.73   │  0.62   │  0.52   │  0.45   │  0.38   │  0.32   │  0.27   │\n",
      "│   12    │ '358757145' │ 'hypertrons/hypertrons-crx-website' │  0.35   │  0.29   │  0.25   │  0.21   │  0.18   │  0.15   │  0.13   │  0.11   │  0.09   │   0.08   │   0.07   │   0.06   │  0.05   │  0.04   │  0.04   │  0.59   │   0.5   │  0.42   │  0.36   │  0.31   │  0.26   │\n",
      "│   13    │ '262909684' │   'X-lab2017/X-lab2017.github.io'   │  0.05   │  0.05   │  0.04   │  0.03   │  0.03   │  0.11   │  0.09   │  0.08   │  0.06   │   0.06   │   0.05   │   0.04   │  0.03   │  0.03   │  0.02   │  0.02   │  0.02   │  0.02   │  0.01   │  0.01   │  0.01   │\n",
      "└─────────┴─────────────┴─────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴──────────┴──────────┴──────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘\n"
     ]
    },
    {
     "data": {
      "application/vnd.plotly.v1+json": {
       "data": [
        {
         "name": "OpenRank",
         "type": "scatter",
         "x": [
          "Y2022M1",
          "Y2022M2",
          "Y2022M3",
          "Y2022M4",
          "Y2022M5",
          "Y2022M6",
          "Y2022M7",
          "Y2022M8",
          "Y2022M9",
          "Y2022M10",
          "Y2022M11",
          "Y2022M12",
          "Y2023M1",
          "Y2023M2",
          "Y2023M3",
          "Y2023M4",
          "Y2023M5",
          "Y2023M6",
          "Y2023M7",
          "Y2023M8",
          "Y2023M9"
         ],
         "y": [
          9.280000000000001,
          8.93,
          14.480000000000002,
          14.379999999999997,
          16.67,
          23.22,
          24.239999999999995,
          22.199999999999992,
          31.089999999999993,
          34.029999999999994,
          38.83,
          36.58,
          30.33,
          49.36,
          41.07999999999999,
          38.42,
          37.32000000000001,
          36.750000000000014,
          39.26,
          34.66,
          32.35
         ]
        },
        {
         "name": "Growth",
         "type": "bar",
         "x": [
          "Y2022M1",
          "Y2022M2",
          "Y2022M3",
          "Y2022M4",
          "Y2022M5",
          "Y2022M6",
          "Y2022M7",
          "Y2022M8",
          "Y2022M9",
          "Y2022M10",
          "Y2022M11",
          "Y2022M12",
          "Y2023M1",
          "Y2023M2",
          "Y2023M3",
          "Y2023M4",
          "Y2023M5",
          "Y2023M6",
          "Y2023M7",
          "Y2023M8",
          "Y2023M9"
         ],
         "y": [
          0,
          -3,
          63,
          0,
          16,
          40,
          5,
          -8,
          41,
          10,
          15,
          -5,
          -17,
          63,
          -16,
          -6,
          -2,
          -1,
          7,
          -11,
          -6
         ],
         "yaxis": "y2"
        }
       ],
       "layout": {
        "autosize": true,
        "title": {
         "text": "X-lab OpenRank trending"
        },
        "xaxis": {
         "autorange": true,
         "range": [
          -0.5,
          20.5
         ],
         "type": "category"
        },
        "yaxis": {
         "autorange": true,
         "range": [
          6.683888888888889,
          51.60611111111111
         ],
         "type": "linear"
        },
        "yaxis2": {
         "autorange": true,
         "overlaying": "y",
         "range": [
          -21.444444444444443,
          67.44444444444444
         ],
         "side": "right",
         "type": "linear"
        }
       }
      },
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABMsAAAFoCAYAAABJ3XxFAAAAAXNSR0IArs4c6QAAIABJREFUeF7s3Qd4VUX+//EvIQRIoYeELiJNpCt2BV0QG6i4FsSCCoorCmtn3b/6w4Ldta2AjbWCYAcUC7q6YKV3kE4g1IQUICHJ//lOcmISUu7NbXPufZ/nyROSnDNnzmvmXk4+mZlTo6CgoEDYEEAAAQQQQAABBBBAAAEEEEAAAQQQQEBqEJbRCxBAAAEEEEAAAQQQQAABBBBAAAEEECgUICyjJyCAAAIIIIAAAggggAACCCCAAAIIIFAkQFhGV0AAAQQQQAABBBBAAAEEEEAAAQQQQICwjD6AAAIIIIAAAggggAACCCCAAAIIIIBAaQFGltEjEEAAAQQQQAABBBBAAAEEEEAAAQQQKBIgLKMrIIAAAggggAACCCCAAAIIIIAAAgggQFhGH0AAAQQQQAABBBBAAAEEEEAAAQQQQKC0ACPL6BEIIIAAAggggAACCCCAAAIIIIAAAggUCRCW0RUQQAABBBBAAAEEEEAAAQQQQAABBBAgLKMPIIAAAggggAACCCCAAAIIIIAAAgggUFqAkWX0CAQQQAABBBBAAAEEEEAAAQQQQAABBIoECMvoCggggAACCCCAAAIIIIAAAggggAACCBCW0QcQQAABBBBAAAEEEEAAAQQQQAABBBAoLcDIMnoEAggggAACCCCAAAIIIIAAAggggAACRQKEZXQFBBBAAAEEEEAAAQQQQAABBBBAAAEECMvoAwgggAACCCCAAAIIIIAAAggggAACCJQWYGQZPQIBBBBAAAEEEEAAAQQQQAABBBBAAIEiAcIyugICCCCAAAIIIIAAAggggAACCCCAAAKEZfQBBBBAAAEEEEAAAQQQQAABBBBAAAEESgswsowegQACCCCAAAIIIIAAAggggAACCCCAQJEAYRldAQEEEEAAAQQQQAABBBBAAAEEEEAAAcIy+gACCCCAAAIIIIAAAggggAACCCCAAAKlBRhZRo9AAAEEEEAAAQQQQAABBBBAAAEEEECgSICwjK6AAAIIIIAAAggggAACCCCAAAIIIIAAYRl9AAEEEEAAAQQQQAABBBBAAAEEEEAAgdICjCyjRyCAAAIIIIAAAggggAACCCCAAAIIIFAkQFhGV0AAAQQQQAABBBBAAAEEEEAAAQQQQICwjD6AAAIIIIAAAggggAACCCCAAAIIIIBAaQFGltEjEEAAAQQQQAABBBBAAAEEEEAAAQQQKBIgLKMrIIAAAggggAACCCCAAAIIIIAAAgggQFhGH0AAAQQQQAABBBBAAAEEEEAAAQQQQKC0ACPL6BEIIIAAAggggAACCCCAAAIIIIAAAggUCRCW0RUQQAABBBBAAAEEEEAAAQQQQAABBBAgLKMPIIAAAggggAACCCCAAAIIIIAAAgggUFqAkWX0CAQQQAABBBBAAAEEEEAAAQQQQAABBIoECMvoCggggAACCCDgscCnn34q+/btk2uvvdbjY3TH3NxcmTJlirRt21bOPvtsr46taOfDhw/L1q1bpWbNmtKyZUupUaOGX8oNt0Jef/11SU5OlvPOOy/cLs1cz4YNG+Sbb76RM844Qzp06GC+d+jQIdPn6tata/oHGwIIIIAAAggg4I0AYZk3WuyLAAIIIICAywSWL18uY8aMMaHBu+++K/Hx8aWuYNOmTXLjjTdKTEyMfPDBBxIbG1vpFV533XWybds2+eqrr7ySyMzMlIsvvli6desmTz/9tFfHlt15/fr18thjj8nGjRtL/ahjx44ybtw4ad68uU/l+/PgqVOnyquvvlqqSA1vunTpYgJH9Qj01r9/fxNSTpo0yetT5efnyzPPPGOOHzJkiNfHB+OAOXPmyJNPPil/+9vf5KKLLjKn/Oc//yk//fST+awhGhsCCCCAAAIIIOCNAGGZN1rsiwACCCCAgAsFHn/8cfn666/lrLPOkvvuu6/4CgoKCmTkyJEmdLr//vvlzDPPrPLqQh2Wff/99/Lwww+benbq1EmOP/54M4Lo559/NtehQdQTTzwRlBCqSiwRef/99+W1116TVq1aSbt27cyIpz/++EN27txpDte26dWrlydFVXsfX8IytdURaRpEvvjii9WuQyAPLC8s01GM2iduueUWOe644wJ5espGAAEEEEAAgTAUICwLw0blkhBAAAEEECgpkJ2dLVdccYUcOHBAnnrqKenevbv58fTp02XixIly4oknFgdQVcmFMizTaZeXXnqpZGVlyfDhw2Xo0KGlgr/nnntOZs2aZaZkvvHGG1VdSpU/1zDR06mdFe3rhGUlRz3piV944QXRKa0nnXSSjB8/vsq6+LKD28IyT92d/coLyzzx8vY8npTJPggggAAC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nyZZ9Thc8x89erR5/Euvq/v375fevXvLb37zGzPKJYgtHn99b9DEnj6Or+erzm2p/f7uu+8O5AsT9Yon/sgoYtffv4jfuzMlFfsP9z/B9h/uf4Lz5/7HO/tE3n+5//HWn9q8FyBZ5r1psalRh7XXq1fvuOPRbwF05ENByST9cP33v//dPKpZvnz5QC0SiT8SsE7ye+jQocDmYtM4bOJ/4YUXzDx02g5BbbHGrx+u33rrLXnnnXfM46P6oXvu3Lly3333mceBg9pijV/ju+OOO0xCWef3001HZ2niIysryySdg9hijV+T3k899ZQZDaTJcN10YmtNhGsSxO9H6iJWscZfkK0mL++880658MILzfxDQWzxxK8365ose+mll0yoM2fOzPtCIojY47n+6GrKOkG6/ixRooQJ98knn5Rt27YFZh9P/NG+rr9/Eb93Z0s8529kr677c//jf//h/sc78+iaYj1/uf8J1l/3zv1PctqAWr0TIFnmnWXK1DRo0CCzEqY+nhn9QXr79u3m0ZvIHGdhBTlR/JF4v/rqK5MI1MdN9WfYthPFrws17Nu3T2rUqGFG1miiYNiwYWELX6Lj1+SATqKs8+HpaMTatWub1ch07jg9hqASNYWh5ffXkUBPP/20SfjpfHH6d7/nvIunkaPj1wm6O3ToYEaTqXnVqlWNf0FJ8nj2kczXFnb+apJPE8Tar/QYdIToKaecksxw4q47On5NsGo/10fQNm3aZEZjNW/e3IzM0mPRczpsW37/999/36zqNXXqVMnMzDTh6sjWkiVLhv76E+v7144dO+TLL7+U+vXrS8WKFQNtkuL6/lvY/cOIESPMl29t2rSRs846C38LAe5/LPA8KMr9jweIFlVw/2OB50FR7n88QKQK3wVIlvlO7vYO9RE//SCn81voI1vRm47g+N///pc3x1kYj/RE8esQeP0m6oMPPjArfVauXNmM7Ahb0qMwf51f7sEHHzSJj6uuuso8hnnSSSeFqhnyx6/DrzXJpI+c6QisZcuWyYABA2TMmDHmg2nYtsL8NdmksWuSQPtOGBN9+eOfNGmSGQmqiQ49BzRxo///yiuvmHMgbFth/tp39EO1Tsytj4y3aNEibOGbVfeir5/6/6tWrTKPu+tcifoYr875df7555vH2IN4BLYwtIL8dQSufkGi8yPqlwunnnqqdO/e3STK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"
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2022.7 based growth: 0.38,0.37,0.60,0.59,0.69,0.96,1.00,0.92,1.28,1.40,1.60,1.51,1.25,2.04,1.69,1.58,1.54,1.52,1.62,1.43,1.33\n"
     ]
    }
   ],
   "source": [
    "openDigger.index.openrank.getRepoOpenrank({\n",
    "    repoIds: [288431943, 470364208, 467768946, 461374162, 471252840, 477937218, 428629051, 262909684, 221379769, 259035151, 358757145, 502755745, 508325123, 533339106, 572845686, 639923640 ],\n",
    "    startYear, startMonth,\n",
    "    endYear, endMonth, percision: 2,\n",
    "    groupTimeRange: 'month', limit: -1, order: 'DESC',\n",
    "}).then(data => {\n",
    "    var x = [], v = [], g = []; g.push(0);\n",
    "    forEveryMonth((y, m, index) => {\n",
    "        var key = `Y${y}M${m}`;\n",
    "        x.push(key); v.push(0);\n",
    "        data.forEach(row => { v[index] += (row.openrank[index] ? row.openrank[index] : 0); row[key] = row.openrank[index] ? row.openrank[index] : 0; });\n",
    "        if (index > 0) g.push(Math.ceil((v[index]-v[index-1])*100/v[index-1]));\n",
    "    });\n",
    "    data.forEach(row => { delete row.openrank; delete row.org; });\n",
    "    console.table(data);\n",
    "    openDigger.render.plotly([\n",
    "        { x, y: v, type: 'scatter', name: 'OpenRank' },\n",
    "        { x, y: g, type: 'bar', yaxis: 'y2', name: 'Growth'}\n",
    "    ], {\n",
    "        title: 'X-lab OpenRank trending',\n",
    "        yaxis2: { overlaying: 'y', side: 'right' }\n",
    "    });\n",
    "    console.log(`2022.7 based growth: ${v.map(i => (i/v[6]).toFixed(2))}`);\n",
    "    fs.writeFileSync('all_data.json', JSON.stringify(data));\n",
    "});"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "220519b1-c3c0-4b15-b82d-2e6c15670c89",
   "metadata": {},
   "source": [
    "## OpenRank Distribution\n",
    "\n",
    "The OpenRank distribution for certain month is calculated by every repo with OpenRank in this month and all the developers' OpenRank in these repos in this month.\n",
    "\n",
    "The algorithm means:\n",
    "\n",
    "- If you contribute to a high OpenRank repo, your final OpenRank may higher.\n",
    "- If you contribute more in any repo, your final OpenRank may higher.\n",
    "- If you have a high OpenRank in a certain repo, make the repo's OpenRank higher, your OpenRank will be higher.\n",
    "\n",
    "So please contribute more and contribute to the important repos, or make your own repo important."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "b288f2fd-d2e5-4d41-ae2f-5c953c9fbfec",
   "metadata": {},
   "outputs": [],
   "source": [
    "var calculateOpenRankDistribution = (y, m, base) => {\n",
    "    var actors = openDigger.label.getGitHubData([':communities/xlab']).githubUsers;\n",
    "    var key = `Y${y}M${m}`;\n",
    "    var repos = JSON.parse(fs.readFileSync('all_data.json').toString()).filter(row => row[key] > 0);\n",
    "    var actorOpenrankMap = new Map();\n",
    "    var actorLoginMap = new Map();\n",
    "    var repoArr = [];\n",
    "    var nextMonth = new Date(`${y}-${m}-1`);\n",
    "    nextMonth.setMonth(nextMonth.getMonth() + 1);\n",
    "    actors.forEach(id => actorOpenrankMap.set(id, 0));\n",
    "    Promise.all(repos.map(r => {\n",
    "        return new Promise(resolve => {\n",
    "            var sql = `MATCH (u:User)\n",
    "            WHERE apoc.any.property(u, 'open_rank_${r.id}_${y}${m}') > 0\n",
    "            AND EXISTS { MATCH (u)-[a:ACTION]->()-[:BELONG]->(r:Repo{id:${r.id}}) WHERE datetime({year:${nextMonth.getFullYear()},month:${nextMonth.getMonth() + 1}})>datetime(a.time)>=datetime({year:${y},month:${m}}) }\n",
    "            RETURN u.id AS id, u.login AS login, apoc.any.property(u, 'open_rank_${r.id}_${y}${m}') AS openrank`;\n",
    "            openDigger.driver.neo4j.query(sql).then(data => {\n",
    "                var total = 0;\n",
    "                var devs = [];\n",
    "                data.forEach(item => total += item.openrank);\n",
    "                data.filter(item => actors.includes(item.id)).forEach(item => {\n",
    "                    actorLoginMap.set(item.id, item.login);\n",
    "                    var openrank = item.openrank / total;\n",
    "                    actorOpenrankMap.set(item.id, actorOpenrankMap.get(item.id) + r[key] * openrank);\n",
    "                    devs.push({login: item.login, openrank });\n",
    "                });\n",
    "                if (devs.length > 0)\n",
    "                    repoArr.push({ name: r.name, openrank: r[key], devsOrigin: devs, devs: devs.sort((a, b) => b.openrank - a.openrank).map(i => `${i.login}(${(i.openrank*100).toFixed(2)}%)`).join(',')});\n",
    "                resolve();\n",
    "            });\n",
    "        });\n",
    "    })).then(() => {\n",
    "        var arr = [];\n",
    "        var total = 0;\n",
    "        for (var [ id, openrank ] of actorOpenrankMap.entries()) {\n",
    "            arr.push({login: actorLoginMap.get(id), openrank});\n",
    "            total += openrank;\n",
    "        }\n",
    "        repoArr.sort((a,b) => b.openrank - a.openrank).forEach(r => console.log(r.name, r.openrank, r.devs));\n",
    "        console.table(arr.map(i => { return { ...i, ratio: (i.openrank*100/total).toFixed(2) + '%', final: Math.round(i.openrank * base / total) } }).filter(i => i.login).sort((a, b) => b.openrank - a.openrank));\n",
    "        var detail = {};\n",
    "        if (fs.existsSync('./detail.json')) detail = JSON.parse(fs.readFileSync('./detail.json').toString());\n",
    "        detail[`${y}-${m}`] = {\n",
    "            period: (y === 2022) ? (m - 5) : ((y - 2022 - 1) * 12 + 7 + m),\n",
    "            reward: base,\n",
    "            total: arr.filter(i => i.login).sort((a, b) => b.openrank - a.openrank),\n",
    "            detail: repoArr.map(r => { return { name: r.name, openrank: r.openrank, actors: r.devsOrigin }; }),\n",
    "        }\n",
    "        fs.writeFileSync('./detail.json', JSON.stringify(detail));\n",
    "    });\n",
    "};"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4c99f229-f765-4802-abd0-075d312a6992",
   "metadata": {},
   "source": [
    "## The OpenRank distibution"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "ae5a1288-e502-4d26-8a0b-0fc4eb76a729",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X-lab2017/open-research 7.83 will-ww(39.16%),birdflyi(19.43%),xiaoya-yaya(9.53%),frank-zsy(6.17%),JingbenShi668(5.44%),zhuxiangning(4.55%),bifenglin(4.50%),kongzhongsanbu(2.96%),wengzhenjie(2.41%),AliceCodeZhang(2.31%),tyn1998(1.63%),gymgym1212(0.81%),longyanz(0.48%)\n",
      "X-lab2017/open-digger 7.67 frank-zsy(57.13%),xiaoya-yaya(11.64%),Best-Eminem(3.05%),xgdyp(1.04%),gymgym1212(0.82%),bifenglin(0.43%),tyn1998(0.38%),birdflyi(0.15%),zhicheng-ning(0.15%),chunchill(0.15%),soobun(0.15%),wangleo61(0.15%),kongzhongsanbu(0.07%),wengzhenjie(0.07%)\n",
      "hypertrons/hypertrons-crx 7.65 tyn1998(57.31%),wxharry(7.73%),zhicheng-ning(4.64%),xgdyp(2.66%),frank-zsy(2.29%),will-ww(0.46%)\n",
      "X-lab2017/open-leaderboard 2.19 gymgym1212(80.05%),will-ww(11.34%),tyn1998(3.28%),frank-zsy(1.47%)\n",
      "X-lab2017/open-wonderland 1.85 will-ww(37.44%),xiaoya-yaya(24.11%),xgdyp(11.21%),soobun(8.82%),tyn1998(6.82%),gymgym1212(5.68%),zhicheng-ning(3.08%),zhuxiangning(2.84%)\n",
      "X-lab2017/open-perf 0.93 bifenglin(53.66%),will-ww(34.27%),frank-zsy(12.07%)\n",
      "X-lab2017/X-lab2017.github.io 0.36 will-ww(100.00%)\n",
      "┌─────────┬──────────────────┬─────────────────────┬──────────┬───────┐\n",
      "│ (index) │      login       │      openrank       │  ratio   │ final │\n",
      "├─────────┼──────────────────┼─────────────────────┼──────────┼───────┤\n",
      "│    0    │   'frank-zsy'    │  5.183922709599158  │ '21.11%' │ 2111  │\n",
      "│    1    │    'tyn1998'     │  4.739585013415567  │ '19.30%' │ 1930  │\n",
      "│    2    │    'will-ww'     │  4.72148854483098   │ '19.23%' │ 1923  │\n",
      "│    3    │  'xiaoya-yaya'   │ 2.0844866158818105  │ '8.49%'  │  849  │\n",
      "│    4    │   'gymgym1212'   │ 1.9848130457504525  │ '8.08%'  │  808  │\n",
      "│    5    │    'birdflyi'    │ 1.5323710465234295  │ '6.24%'  │  624  │\n",
      "│    6    │   'bifenglin'    │ 0.8846138642650992  │ '3.60%'  │  360  │\n",
      "│    7    │    'wxharry'     │ 0.5914257637479682  │ '2.41%'  │  241  │\n",
      "│    8    │     'xgdyp'      │ 0.49066578501965025 │ '2.00%'  │  200  │\n",
      "│    9    │ 'JingbenShi668'  │ 0.42564989080154725 │ '1.73%'  │  173  │\n",
      "│   10    │ 'zhicheng-ning'  │ 0.42333294094365165 │ '1.72%'  │  172  │\n",
      "│   11    │  'zhuxiangning'  │ 0.4087575367344145  │ '1.66%'  │  166  │\n",
      "│   12    │ 'kongzhongsanbu' │ 0.23737239254067619 │ '0.97%'  │  97   │\n",
      "│   13    │  'Best-Eminem'   │ 0.23355689545248304 │ '0.95%'  │  95   │\n",
      "│   14    │  'wengzhenjie'   │ 0.19363511969378897 │ '0.79%'  │  79   │\n",
      "│   15    │ 'AliceCodeZhang' │ 0.18104893326050875 │ '0.74%'  │  74   │\n",
      "│   16    │     'soobun'     │ 0.17442482158643294 │ '0.71%'  │  71   │\n",
      "│   17    │    'longyanz'    │ 0.03775814276836733 │ '0.15%'  │  15   │\n",
      "│   18    │   'wangleo61'    │ 0.0113297294607186  │ '0.05%'  │   5   │\n",
      "│   19    │   'chunchill'    │ 0.0113297294607186  │ '0.05%'  │   5   │\n",
      "└─────────┴──────────────────┴─────────────────────┴──────────┴───────┘\n"
     ]
    }
   ],
   "source": [
    "calculateOpenRankDistribution(2022, 6, 10000);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "c2a24299-e25d-423e-a2b1-dd2011ae2cd8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X-lab2017/open-digger 9.17 frank-zsy(51.79%),yoyo-wu98(8.70%),longyanz(5.88%),xiaoya-yaya(3.38%),Best-Eminem(2.15%),xgdyp(1.12%),zhuxiangning(0.97%),zhicheng-ning(0.23%)\n",
      "hypertrons/hypertrons-crx 8.18 tyn1998(66.22%),wxharry(9.50%),xgdyp(4.10%),zhicheng-ning(3.18%),frank-zsy(2.07%),will-ww(0.89%)\n",
      "X-lab2017/open-wonderland 5.46 will-ww(54.17%),bifenglin(14.15%),xiaoya-yaya(12.44%),TieWay59(3.72%),xgdyp(2.21%),wangleo61(2.10%),frank-zsy(1.58%),kongzhongsanbu(1.24%),tyn1998(1.24%),birdflyi(1.03%),yoyo-wu98(1.03%),longyanz(0.94%),zhicheng-ning(0.84%),gymgym1212(0.82%),JingbenShi668(0.73%)\n",
      "X-lab2017/open-research 3.71 will-ww(48.61%),bifenglin(24.31%),yoyo-wu98(8.22%),xgdyp(2.16%)\n",
      "X-lab2017/open-leaderboard 1.97 gymgym1212(68.75%),will-ww(31.25%)\n",
      "OpenEduTech/EduTechResearch 0.7 soobun(59.28%),will-ww(30.36%),AliceCodeZhang(10.36%)\n",
      "X-lab2017/open-perf 0.48 bifenglin(64.67%),will-ww(35.33%)\n",
      "┌─────────┬──────────────────┬──────────────────────┬──────────┬───────┐\n",
      "│ (index) │      login       │       openrank       │  ratio   │ final │\n",
      "├─────────┼──────────────────┼──────────────────────┼──────────┼───────┤\n",
      "│    0    │    'will-ww'     │  5.8316123920234375  │ '22.92%' │ 2292  │\n",
      "│    1    │    'tyn1998'     │  5.484358204406453   │ '21.55%' │ 2155  │\n",
      "│    2    │   'frank-zsy'    │  5.005160538106951   │ '19.67%' │ 1967  │\n",
      "│    3    │   'bifenglin'    │  1.985015390887443   │ '7.80%'  │  780  │\n",
      "│    4    │   'gymgym1212'   │  1.3991615681953897  │ '5.50%'  │  550  │\n",
      "│    5    │   'yoyo-wu98'    │  1.1590928655695252  │ '4.56%'  │  456  │\n",
      "│    6    │  'xiaoya-yaya'   │  0.9894217049373486  │ '3.89%'  │  389  │\n",
      "│    7    │    'wxharry'     │  0.7771478802416969  │ '3.05%'  │  305  │\n",
      "│    8    │     'xgdyp'      │  0.6387628745617916  │ '2.51%'  │  251  │\n",
      "│    9    │    'longyanz'    │  0.5906564879603201  │ '2.32%'  │  232  │\n",
      "│   10    │     'soobun'     │  0.4149571519532799  │ '1.63%'  │  163  │\n",
      "│   11    │ 'zhicheng-ning'  │  0.3272238812487138  │ '1.29%'  │  129  │\n",
      "│   12    │    'TieWay59'    │ 0.20331099013140763  │ '0.80%'  │  80   │\n",
      "│   13    │  'Best-Eminem'   │ 0.19698328472323537  │ '0.77%'  │  77   │\n",
      "│   14    │   'wangleo61'    │ 0.11486316512251663  │ '0.45%'  │  45   │\n",
      "│   15    │  'zhuxiangning'  │ 0.08911374508603795  │ '0.35%'  │  35   │\n",
      "│   16    │ 'AliceCodeZhang' │ 0.07252144577142913  │ '0.29%'  │  29   │\n",
      "│   17    │ 'kongzhongsanbu' │  0.0679543438046433  │ '0.27%'  │  27   │\n",
      "│   18    │    'birdflyi'    │ 0.05636856389302188  │ '0.22%'  │  22   │\n",
      "│   19    │ 'JingbenShi668'  │ 0.039926289357797705 │ '0.16%'  │  16   │\n",
      "└─────────┴──────────────────┴──────────────────────┴──────────┴───────┘\n"
     ]
    }
   ],
   "source": [
    "calculateOpenRankDistribution(2022, 7, 10000);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "efaa0884-0175-41fc-8f32-2514cc54c466",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X-lab2017/open-digger 8.53 frank-zsy(44.66%),Best-Eminem(13.02%),xiaoya-yaya(6.78%),longyanz(6.52%),PureNatural(3.70%)\n",
      "X-lab2017/open-wonderland 6.82 xiaoya-yaya(26.28%),will-ww(23.78%),bifenglin(10.70%),wangleo61(9.91%),birdflyi(6.23%),tyn1998(4.82%),zhicheng-ning(4.78%),xgdyp(3.89%),TieWay59(3.31%)\n",
      "hypertrons/hypertrons-crx 6.19 tyn1998(36.80%),wxharry(20.17%),frank-zsy(6.80%)\n",
      "X-lab2017/open-research 3.16 will-ww(100.00%)\n",
      "X-lab2017/open-perf 0.71 will-ww(67.09%),bifenglin(32.91%)\n",
      "OpenEduTech/EduTechResearch 0.61 AliceCodeZhang(100.00%)\n",
      "┌─────────┬──────────────────┬─────────────────────┬──────────┬───────┐\n",
      "│ (index) │      login       │      openrank       │  ratio   │ final │\n",
      "├─────────┼──────────────────┼─────────────────────┼──────────┼───────┤\n",
      "│    0    │    'will-ww'     │  5.258053762396429  │ '24.82%' │ 2482  │\n",
      "│    1    │   'frank-zsy'    │  4.230722231006283  │ '19.97%' │ 1997  │\n",
      "│    2    │    'tyn1998'     │ 2.6068227349811006  │ '12.30%' │ 1230  │\n",
      "│    3    │  'xiaoya-yaya'   │  2.369927311199607  │ '11.19%' │ 1119  │\n",
      "│    4    │    'wxharry'     │ 1.2487951821733556  │ '5.89%'  │  589  │\n",
      "│    5    │  'Best-Eminem'   │  1.110273019053647  │ '5.24%'  │  524  │\n",
      "│    6    │   'bifenglin'    │ 0.9631299703923463  │ '4.55%'  │  455  │\n",
      "│    7    │   'wangleo61'    │ 0.6759877182827808  │ '3.19%'  │  319  │\n",
      "│    8    │ 'AliceCodeZhang' │        0.61         │ '2.88%'  │  288  │\n",
      "│    9    │    'longyanz'    │ 0.5560558974737283  │ '2.62%'  │  262  │\n",
      "│   10    │    'birdflyi'    │ 0.4247558577830366  │ '2.00%'  │  200  │\n",
      "│   11    │ 'zhicheng-ning'  │ 0.3259187384133923  │ '1.54%'  │  154  │\n",
      "│   12    │  'PureNatural'   │ 0.3153993714783857  │ '1.49%'  │  149  │\n",
      "│   13    │     'xgdyp'      │ 0.2655869089776759  │ '1.25%'  │  125  │\n",
      "│   14    │    'TieWay59'    │ 0.22573236631908478 │ '1.07%'  │  107  │\n",
      "└─────────┴──────────────────┴─────────────────────┴──────────┴───────┘\n"
     ]
    }
   ],
   "source": [
    "calculateOpenRankDistribution(2022, 8, 10000);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "9c32f763-b2c8-4366-a01c-0dc91bc7a694",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X-lab2017/open-digger 9.96 frank-zsy(40.44%),xgdyp(10.33%),Best-Eminem(7.94%),zhicheng-ning(5.26%),PureNatural(1.44%),will-ww(0.49%),wxharry(0.32%),AliceCodeZhang(0.32%),tvbboy(0.32%),tyn1998(0.28%),JingbenShi668(0.21%)\n",
      "X-lab2017/open-research 8.01 xiaoya-yaya(25.39%),will-ww(22.37%),frank-zsy(17.68%),birdflyi(7.59%),bifenglin(5.33%),xgdyp(5.27%),zhicheng-ning(2.86%),yoyo-wu98(1.58%),wengzhenjie(1.28%),springyulu(0.94%),wj23027(0.94%),lhbvvvvv(0.94%),andyhuang18(0.94%),gymgym1212(0.69%),longyanz(0.56%)\n",
      "hypertrons/hypertrons-crx 6.95 tyn1998(32.21%),wxharry(23.63%),frank-zsy(3.23%),zhicheng-ning(1.87%)\n",
      "X-lab2017/open-wonderland 5.18 will-ww(53.61%),bifenglin(25.38%),tyn1998(10.83%),xgdyp(10.18%)\n",
      "OpenEduTech/EduTechResearch 3.17 AliceCodeZhang(53.62%),will-ww(12.56%),lijinlus(7.52%),foursevenlove(5.63%),springyulu(1.84%),wj23027(1.84%)\n",
      "OpenEduTech/OpenEduKG 2.5 will-ww(24.13%),blackburnnnn(17.66%),tvbboy(17.30%),AliceCodeZhang(1.88%)\n",
      "┌─────────┬──────────────────┬──────────────────────┬──────────┬───────┐\n",
      "│ (index) │      login       │       openrank       │  ratio   │ final │\n",
      "├─────────┼──────────────────┼──────────────────────┼──────────┼───────┤\n",
      "│    0    │   'frank-zsy'    │  5.667808603124174   │ '20.36%' │ 2504  │\n",
      "│    1    │    'will-ww'     │   5.61892177018453   │ '20.19%' │ 2483  │\n",
      "│    2    │    'tyn1998'     │  2.828435580766894   │ '10.16%' │ 1250  │\n",
      "│    3    │  'xiaoya-yaya'   │  2.033871549651967   │ '7.31%'  │  899  │\n",
      "│    4    │     'xgdyp'      │  1.9788489437251013  │ '7.11%'  │  874  │\n",
      "│    5    │ 'AliceCodeZhang' │  1.7786070720074139  │ '6.39%'  │  786  │\n",
      "│    6    │   'bifenglin'    │  1.7412826947769315  │ '6.26%'  │  769  │\n",
      "│    7    │    'wxharry'     │  1.6742627585929901  │ '6.01%'  │  740  │\n",
      "│    8    │ 'zhicheng-ning'  │   0.88269806743348   │ '3.17%'  │  390  │\n",
      "│    9    │  'Best-Eminem'   │  0.7906435464893632  │ '2.84%'  │  349  │\n",
      "│   10    │    'birdflyi'    │  0.6077162979003139  │ '2.18%'  │  269  │\n",
      "│   11    │     'tvbboy'     │  0.4642164226629942  │ '1.67%'  │  205  │\n",
      "│   12    │  'blackburnnnn'  │  0.4414301350408517  │ '1.59%'  │  195  │\n",
      "│   13    │    'lijinlus'    │ 0.23849970781530783  │ '0.86%'  │  105  │\n",
      "│   14    │ 'foursevenlove'  │ 0.17862750047112702  │ '0.64%'  │  79   │\n",
      "│   15    │  'PureNatural'   │ 0.14302385827291353  │ '0.51%'  │  63   │\n",
      "│   16    │    'wj23027'     │  0.1336099093860583  │ '0.48%'  │  59   │\n",
      "│   17    │   'springyulu'   │  0.1336099093860583  │ '0.48%'  │  59   │\n",
      "│   18    │   'yoyo-wu98'    │ 0.12615789547797238  │ '0.45%'  │  56   │\n",
      "│   19    │  'wengzhenjie'   │ 0.10238411507323346  │ '0.37%'  │  45   │\n",
      "│   20    │  'andyhuang18'   │ 0.07535898850716928  │ '0.27%'  │  33   │\n",
      "│   21    │    'lhbvvvvv'    │ 0.07535898850716928  │ '0.27%'  │  33   │\n",
      "│   22    │   'gymgym1212'   │  0.054955116490918   │ '0.20%'  │  24   │\n",
      "│   23    │    'longyanz'    │ 0.04520307899060463  │ '0.16%'  │  20   │\n",
      "│   24    │ 'JingbenShi668'  │ 0.020498083144149606 │ '0.07%'  │   9   │\n",
      "└─────────┴──────────────────┴──────────────────────┴──────────┴───────┘\n"
     ]
    }
   ],
   "source": [
    "calculateOpenRankDistribution(2022, 9, 12300);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "f3bc5b64-3fad-4621-9b11-ab9957073b3b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "hypertrons/hypertrons-crx 13.01 tyn1998(31.99%),andyhuang18(12.00%),wxharry(9.83%),frank-zsy(6.24%),wj23027(5.16%),zhicheng-ning(4.39%),Zzzzzhuzhiwei(2.64%),xgdyp(1.56%),will-ww(0.31%)\n",
      "X-lab2017/open-digger 11.84 xgdyp(26.52%),frank-zsy(19.26%),zhicheng-ning(9.79%),yoyo-wu98(7.24%),will-ww(4.06%),lhbvvvvv(2.40%),tyn1998(1.14%),xiaoya-yaya(0.89%),bifenglin(0.69%),Zzzzzhuzhiwei(0.51%),foursevenlove(0.24%),lijinlus(0.24%),blackburnnnn(0.24%),betaberry(0.24%),19883235(0.24%),Kx-Chen-99(0.24%)\n",
      "X-lab2017/open-research 7.69 xiaoya-yaya(30.42%),will-ww(24.93%),bifenglin(20.96%),birdflyi(8.97%),PureNatural(5.47%),xgdyp(3.26%),frank-zsy(2.85%),tyn1998(1.99%),wangleo61(1.15%)\n",
      "OpenEduTech/EduTechResearch 4.19 foursevenlove(33.09%),19883235(28.13%),AliceCodeZhang(18.76%),Kx-Chen-99(6.08%),lijinlus(5.83%),will-ww(4.55%),zhicheng-ning(1.04%),tyn1998(0.73%)\n",
      "OpenEduTech/OpenEduKG 2.15 tvbboy(58.35%),will-ww(14.95%),blackburnnnn(13.27%)\n",
      "X-lab2017/open-wonderland 2.13 will-ww(52.49%),bifenglin(26.45%),zhicheng-ning(10.67%)\n",
      "X-lab2017/open-leaderboard 0.96 will-ww(49.95%),tyn1998(41.30%),zhicheng-ning(8.75%)\n",
      "X-lab2017/open-perf 0.29 will-ww(100.00%)\n",
      "┌─────────┬──────────────────┬─────────────────────┬──────────┬───────┐\n",
      "│ (index) │      login       │      openrank       │  ratio   │ final │\n",
      "├─────────┼──────────────────┼─────────────────────┼──────────┼───────┤\n",
      "│    0    │    'tyn1998'     │  4.877809329449983  │ '13.85%' │ 1911  │\n",
      "│    1    │    'will-ww'     │  4.837545177484833  │ '13.73%' │ 1895  │\n",
      "│    2    │     'xgdyp'      │  3.594119488844604  │ '10.20%' │ 1408  │\n",
      "│    3    │   'frank-zsy'    │  3.311703413276029  │ '9.40%'  │ 1298  │\n",
      "│    4    │  'xiaoya-yaya'   │ 2.4448740614902924  │ '6.94%'  │  958  │\n",
      "│    5    │   'bifenglin'    │  2.257566804756431  │ '6.41%'  │  885  │\n",
      "│    6    │ 'zhicheng-ning'  │ 2.0849614755867516  │ '5.92%'  │  817  │\n",
      "│    7    │  'andyhuang18'   │  1.560908394041564  │ '4.43%'  │  612  │\n",
      "│    8    │ 'foursevenlove'  │ 1.4144839471255044  │ '4.02%'  │  554  │\n",
      "│    9    │    'wxharry'     │  1.278866435559088  │ '3.63%'  │  501  │\n",
      "│   10    │     'tvbboy'     │ 1.2545610219190646  │ '3.56%'  │  492  │\n",
      "│   11    │    '19883235'    │ 1.2064465177652808  │ '3.43%'  │  473  │\n",
      "│   12    │   'yoyo-wu98'    │ 0.8576918177428811  │ '2.44%'  │  336  │\n",
      "│   13    │ 'AliceCodeZhang' │ 0.7859222620210955  │ '2.23%'  │  308  │\n",
      "│   14    │    'birdflyi'    │ 0.6901670443356847  │ '1.96%'  │  270  │\n",
      "│   15    │    'wj23027'     │ 0.6712201583126706  │ '1.91%'  │  263  │\n",
      "│   16    │  'PureNatural'   │ 0.42051588680588653 │ '1.19%'  │  165  │\n",
      "│   17    │ 'Zzzzzhuzhiwei'  │ 0.4036602979103219  │ '1.15%'  │  158  │\n",
      "│   18    │  'blackburnnnn'  │ 0.3133381713682622  │ '0.89%'  │  123  │\n",
      "│   19    │    'lhbvvvvv'    │ 0.28463003993887437 │ '0.81%'  │  112  │\n",
      "│   20    │   'Kx-Chen-99'   │ 0.28270006365777434 │ '0.80%'  │  111  │\n",
      "│   21    │    'lijinlus'    │ 0.2722355923252731  │ '0.77%'  │  107  │\n",
      "│   22    │   'wangleo61'    │ 0.08806437850740305 │ '0.25%'  │  35   │\n",
      "│   23    │   'betaberry'    │ 0.0279294024860705  │ '0.08%'  │  11   │\n",
      "└─────────┴──────────────────┴─────────────────────┴──────────┴───────┘\n"
     ]
    }
   ],
   "source": [
    "calculateOpenRankDistribution(2022, 10, 13800);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "e0ac8957-af3c-45e2-a623-50ab22fd988f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "hypertrons/hypertrons-crx 15.39 tyn1998(31.09%),frank-zsy(10.23%),andyhuang18(8.24%),wj23027(7.02%),wxharry(5.61%),Zzzzzhuzhiwei(5.58%),will-ww(2.76%),xgdyp(1.48%),zhicheng-ning(1.00%),lhbvvvvv(0.45%)\n",
      "X-lab2017/open-digger 14.65 frank-zsy(37.68%),xgdyp(27.24%),longyanz(6.73%),zhicheng-ning(3.17%),will-ww(1.96%),xiaoya-yaya(1.09%),Best-Eminem(0.81%),springyulu(0.79%),bifenglin(0.61%),lhbvvvvv(0.45%),tyn1998(0.36%),birdflyi(0.07%)\n",
      "OpenEduTech/EduTechResearch 5.87 19883235(24.00%),foursevenlove(20.83%),lijinlus(14.44%),AliceCodeZhang(10.76%),will-ww(5.65%),Kx-Chen-99(4.74%)\n",
      "X-lab2017/open-research 5.87 yoyo-wu98(20.91%),bifenglin(18.56%),tyn1998(11.42%),birdflyi(11.36%),xiaoya-yaya(11.02%),will-ww(9.11%),xgdyp(9.09%),zhicheng-ning(4.54%),longyanz(2.47%)\n",
      "X-lab2017/open-wonderland 3.62 zhicheng-ning(31.01%),bifenglin(26.98%),will-ww(17.97%),tyn1998(10.25%),PureNatural(8.53%)\n",
      "OpenEduTech/OpenEduKG 1.5 tvbboy(60.43%),blackburnnnn(39.57%)\n",
      "X-lab2017/open-perf 0.55 bifenglin(63.26%),will-ww(36.74%)\n",
      "X-lab2017/open-leaderboard 0.41 xgdyp(52.03%),zhicheng-ning(47.97%)\n",
      "┌─────────┬──────────────────┬─────────────────────┬──────────┬───────┐\n",
      "│ (index) │      login       │      openrank       │  ratio   │ final │\n",
      "├─────────┼──────────────────┼─────────────────────┼──────────┼───────┤\n",
      "│    0    │   'frank-zsy'    │  7.095225691000987  │ '17.94%' │ 2780  │\n",
      "│    1    │    'tyn1998'     │  5.87963544484142   │ '14.86%' │ 2304  │\n",
      "│    2    │     'xgdyp'      │  4.964025465149429  │ '12.55%' │ 1945  │\n",
      "│    3    │   'bifenglin'    │  2.503570740244153  │ '6.33%'  │  981  │\n",
      "│    4    │    'will-ww'     │  2.429606572766338  │ '6.14%'  │  952  │\n",
      "│    5    │ 'zhicheng-ning'  │  2.204419974942276  │ '5.57%'  │  864  │\n",
      "│    6    │    '19883235'    │ 1.4089473726640547  │ '3.56%'  │  552  │\n",
      "│    7    │  'andyhuang18'   │  1.268188461598458  │ '3.21%'  │  497  │\n",
      "│    8    │   'yoyo-wu98'    │ 1.2271793434171125  │ '3.10%'  │  481  │\n",
      "│    9    │ 'foursevenlove'  │ 1.2227526491226017  │ '3.09%'  │  479  │\n",
      "│   10    │    'longyanz'    │ 1.1313838457072982  │ '2.86%'  │  443  │\n",
      "│   11    │    'wj23027'     │  1.080898847494124  │ '2.73%'  │  424  │\n",
      "│   12    │     'tvbboy'     │ 0.9064783932852438  │ '2.29%'  │  355  │\n",
      "│   13    │    'wxharry'     │ 0.8634822025660723  │ '2.18%'  │  338  │\n",
      "│   14    │ 'Zzzzzhuzhiwei'  │ 0.8594213584526855  │ '2.17%'  │  337  │\n",
      "│   15    │    'lijinlus'    │ 0.8473388388922534  │ '2.14%'  │  332  │\n",
      "│   16    │  'xiaoya-yaya'   │ 0.8069047049586426  │ '2.04%'  │  316  │\n",
      "│   17    │    'birdflyi'    │ 0.6766019907047925  │ '1.71%'  │  265  │\n",
      "│   18    │ 'AliceCodeZhang' │ 0.6314276421223731  │ '1.60%'  │  247  │\n",
      "│   19    │  'blackburnnnn'  │ 0.5935216067147561  │ '1.50%'  │  233  │\n",
      "│   20    │  'PureNatural'   │ 0.30872594666655223 │ '0.78%'  │  121  │\n",
      "│   21    │   'Kx-Chen-99'   │ 0.2780187699277188  │ '0.70%'  │  109  │\n",
      "│   22    │    'lhbvvvvv'    │ 0.13574578076679839 │ '0.34%'  │  53   │\n",
      "│   23    │  'Best-Eminem'   │ 0.11898367180429818 │ '0.30%'  │  47   │\n",
      "│   24    │   'springyulu'   │ 0.1153956936045639  │ '0.29%'  │  45   │\n",
      "└─────────┴──────────────────┴─────────────────────┴──────────┴───────┘\n"
     ]
    }
   ],
   "source": [
    "calculateOpenRankDistribution(2022, 11, 15500);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "8f95f19c-6210-42a3-ac76-61bfdaba7f31",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X-lab2017/open-digger 19.36 frank-zsy(42.64%),xgdyp(16.73%),longyanz(11.20%),zhicheng-ning(3.49%),tyn1998(3.22%),PureNatural(2.97%),birdflyi(1.78%),bifenglin(0.99%),xiaoya-yaya(0.55%)\n",
      "hypertrons/hypertrons-crx 10.02 tyn1998(41.77%),lhbvvvvv(10.58%),frank-zsy(9.77%),wxharry(3.72%)\n",
      "OpenEduTech/EduTechResearch 4.33 19883235(43.31%),AliceCodeZhang(21.11%),lijinlus(18.23%),Kx-Chen-99(17.35%)\n",
      "X-lab2017/open-research 3.89 xiaoya-yaya(70.10%),will-ww(10.94%),xgdyp(7.87%),lhbvvvvv(6.49%),birdflyi(4.59%)\n",
      "X-lab2017/open-wonderland 3.84 zhicheng-ning(35.83%),xgdyp(30.89%),will-ww(19.14%),frank-zsy(9.07%)\n",
      "X-lab2017/od-api 2.38 zhicheng-ning(87.81%)\n",
      "┌─────────┬──────────────────┬─────────────────────┬──────────┬───────┐\n",
      "│ (index) │      login       │      openrank       │  ratio   │ final │\n",
      "├─────────┼──────────────────┼─────────────────────┼──────────┼───────┤\n",
      "│    0    │   'frank-zsy'    │  9.582714119641706  │ '26.09%' │ 3730  │\n",
      "│    1    │    'tyn1998'     │  4.809405174325107  │ '13.09%' │ 1872  │\n",
      "│    2    │     'xgdyp'      │  4.731276772124084  │ '12.88%' │ 1842  │\n",
      "│    3    │ 'zhicheng-ning'  │  4.141564970416485  │ '11.27%' │ 1612  │\n",
      "│    4    │  'xiaoya-yaya'   │ 2.8342231285162702  │ '7.72%'  │ 1103  │\n",
      "│    5    │    'longyanz'    │ 2.1690785362878677  │ '5.90%'  │  844  │\n",
      "│    6    │    '19883235'    │ 1.8752285273906928  │ '5.10%'  │  730  │\n",
      "│    7    │    'lhbvvvvv'    │ 1.3126630277494047  │ '3.57%'  │  511  │\n",
      "│    8    │    'will-ww'     │ 1.1608484658658669  │ '3.16%'  │  452  │\n",
      "│    9    │ 'AliceCodeZhang' │ 0.9142488153499565  │ '2.49%'  │  356  │\n",
      "│   10    │    'lijinlus'    │ 0.7891705717443623  │ '2.15%'  │  307  │\n",
      "│   11    │   'Kx-Chen-99'   │ 0.7513520855149886  │ '2.05%'  │  292  │\n",
      "│   12    │  'PureNatural'   │ 0.5753740858884816  │ '1.57%'  │  224  │\n",
      "│   13    │    'birdflyi'    │ 0.5239895104188514  │ '1.43%'  │  204  │\n",
      "│   14    │    'wxharry'     │ 0.3724000123291137  │ '1.01%'  │  145  │\n",
      "│   15    │   'bifenglin'    │ 0.19255979313667235 │ '0.52%'  │  75   │\n",
      "└─────────┴──────────────────┴─────────────────────┴──────────┴───────┘\n"
     ]
    }
   ],
   "source": [
    "calculateOpenRankDistribution(2022, 12, 14300);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "5fed4ba2-e7cf-4e8f-a69b-653c10bfaf4b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X-lab2017/open-digger 19.9 frank-zsy(46.68%),xgdyp(10.51%),PureNatural(3.82%),birdflyi(3.47%),bifenglin(1.98%),tyn1998(1.72%),xiaoya-yaya(1.22%),zhicheng-ning(1.04%),will-ww(0.75%),wangleo61(0.28%)\n",
      "hypertrons/hypertrons-crx 7.04 tyn1998(36.97%),wxharry(9.16%),frank-zsy(6.77%),andyhuang18(3.11%),wj23027(2.74%),zhicheng-ning(0.93%)\n",
      "X-lab2017/open-wonderland 2.65 will-ww(38.08%),zhicheng-ning(32.52%),PureNatural(14.02%),bifenglin(12.66%)\n",
      "X-lab2017/open-research 2.18 xiaoya-yaya(66.51%)\n",
      "X-lab2017/od-api 1.01 zhicheng-ning(100.00%)\n",
      "┌─────────┬─────────────────┬─────────────────────┬──────────┬───────┐\n",
      "│ (index) │      login      │      openrank       │  ratio   │ final │\n",
      "├─────────┼─────────────────┼─────────────────────┼──────────┼───────┤\n",
      "│    0    │   'frank-zsy'   │   9.7649981214232   │ '41.63%' │ 5079  │\n",
      "│    1    │    'tyn1998'    │ 2.9455644366777736  │ '12.56%' │ 1532  │\n",
      "│    2    │ 'zhicheng-ning' │  2.14416861956719   │ '9.14%'  │ 1115  │\n",
      "│    3    │     'xgdyp'     │ 2.0906027973611976  │ '8.91%'  │ 1087  │\n",
      "│    4    │  'xiaoya-yaya'  │ 1.6923163390040263  │ '7.21%'  │  880  │\n",
      "│    5    │    'will-ww'    │ 1.1576350818435788  │ '4.93%'  │  602  │\n",
      "│    6    │  'PureNatural'  │ 1.1313601356412424  │ '4.82%'  │  588  │\n",
      "│    7    │   'bifenglin'   │ 0.7293838832479975  │ '3.11%'  │  379  │\n",
      "│    8    │   'birdflyi'    │ 0.6897661003529781  │ '2.94%'  │  359  │\n",
      "│    9    │    'wxharry'    │ 0.6445964406565085  │ '2.75%'  │  335  │\n",
      "│   10    │  'andyhuang18'  │ 0.21878142436660278 │ '0.93%'  │  114  │\n",
      "│   11    │    'wj23027'    │ 0.19303557338393112 │ '0.82%'  │  100  │\n",
      "│   12    │   'wangleo61'   │ 0.05557066039759489 │ '0.24%'  │  29   │\n",
      "└─────────┴─────────────────┴─────────────────────┴──────────┴───────┘\n"
     ]
    }
   ],
   "source": [
    "calculateOpenRankDistribution(2023, 1, 12200);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "e3bf0376-538a-4928-8316-12ac611c2e99",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X-lab2017/open-digger 40.48 frank-zsy(50.21%),xgdyp(4.86%),tyn1998(3.83%),xiaoya-yaya(3.19%),will-ww(1.60%),zhicheng-ning(0.73%),Miaheeee(0.39%),springyulu(0.11%),wj23027(0.09%),andyhuang18(0.09%),lhbvvvvv(0.06%),Zzzzzhuzhiwei(0.03%)\n",
      "hypertrons/hypertrons-crx 5.69 tyn1998(49.99%),wxharry(8.35%),lhbvvvvv(5.45%),wj23027(3.13%),frank-zsy(0.86%)\n",
      "X-lab2017/open-leaderboard 3.83 tyn1998(46.22%),andyhuang18(17.37%),wj23027(15.35%),zhicheng-ning(10.60%),will-ww(8.54%),frank-zsy(0.48%),bifenglin(0.48%)\n",
      "X-lab2017/oss101 3.23 will-ww(54.04%),tyn1998(13.65%),zhicheng-ning(2.60%),AliceCodeZhang(1.35%)\n",
      "X-lab2017/open-wonderland 2.37 will-ww(54.65%),zhicheng-ning(24.71%),xgdyp(13.21%),bifenglin(5.55%),tyn1998(0.87%),frank-zsy(0.67%)\n",
      "X-lab2017/open-galaxy 2.18 tyn1998(95.19%),frank-zsy(1.60%)\n",
      "X-lab2017/od-api 0.55 zhicheng-ning(100.00%)\n",
      "┌─────────┬──────────────────┬──────────────────────┬──────────┬───────┐\n",
      "│ (index) │      login       │       openrank       │  ratio   │ final │\n",
      "├─────────┼──────────────────┼──────────────────────┼──────────┼───────┤\n",
      "│    0    │   'frank-zsy'    │  20.444604559924183  │ '49.41%' │ 9684  │\n",
      "│    1    │    'tyn1998'     │  8.703275480487644   │ '21.03%' │ 4122  │\n",
      "│    2    │    'will-ww'     │  4.017386935689917   │ '9.71%'  │ 1903  │\n",
      "│    3    │     'xgdyp'      │  2.2818145591253245  │ '5.51%'  │ 1081  │\n",
      "│    4    │ 'zhicheng-ning'  │  1.9211396100940468  │ '4.64%'  │  910  │\n",
      "│    5    │  'xiaoya-yaya'   │  1.2895453893295568  │ '3.12%'  │  611  │\n",
      "│    6    │    'wj23027'     │  0.8033901993739998  │ '1.94%'  │  381  │\n",
      "│    7    │  'andyhuang18'   │  0.702436950062952   │ '1.70%'  │  333  │\n",
      "│    8    │    'wxharry'     │ 0.47506895066189464  │ '1.15%'  │  225  │\n",
      "│    9    │    'lhbvvvvv'    │  0.3345454636743652  │ '0.81%'  │  158  │\n",
      "│   10    │    'Miaheeee'    │ 0.15769673358986183  │ '0.38%'  │  75   │\n",
      "│   11    │   'bifenglin'    │ 0.14989754677344788  │ '0.36%'  │  71   │\n",
      "│   12    │ 'AliceCodeZhang' │ 0.04348022061502695  │ '0.11%'  │  21   │\n",
      "│   13    │   'springyulu'   │ 0.04262937392401509  │ '0.10%'  │  20   │\n",
      "│   14    │ 'Zzzzzhuzhiwei'  │ 0.013798220920561835 │ '0.03%'  │   7   │\n",
      "└─────────┴──────────────────┴──────────────────────┴──────────┴───────┘\n"
     ]
    }
   ],
   "source": [
    "calculateOpenRankDistribution(2023, 2, 19600);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "534f6e94-b058-4b67-90c5-db0d98178ecd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X-lab2017/oss101 23.75 will-ww(32.41%),zhicheng-ning(13.29%),TieWay59(3.31%),andyhuang18(2.24%),tyn1998(1.56%),wj23027(1.00%),Bruce-Jay(0.95%),springyulu(0.68%),lhbvvvvv(0.47%),xgdyp(0.44%),Zzzzzhuzhiwei(0.43%),frank-zsy(0.38%)\n",
      "X-lab2017/open-digger 22.05 frank-zsy(23.21%),xgdyp(10.95%),Zzzzzhuzhiwei(9.06%),tyn1998(6.70%),bifenglin(3.50%),xiaoya-yaya(2.28%),zhicheng-ning(2.09%),dlimeng(1.26%)\n",
      "hypertrons/hypertrons-crx 14.47 tyn1998(27.19%),lhbvvvvv(12.31%),andyhuang18(8.96%),wj23027(7.16%),frank-zsy(4.34%),xgdyp(2.13%),wxharry(1.94%),Zzzzzhuzhiwei(1.73%),will-ww(0.82%),dlimeng(0.65%)\n",
      "X-lab2017/open-wonderland 6.31 zhicheng-ning(39.44%),will-ww(19.83%),tyn1998(11.76%),xgdyp(5.75%),PureNatural(5.24%),xiaoya-yaya(4.30%),longyanz(3.69%),yoyo-wu98(3.44%),bifenglin(3.15%),birdflyi(2.23%)\n",
      "X-lab2017/open-leaderboard 2.93 zhicheng-ning(47.70%),andyhuang18(28.94%),wj23027(19.41%),will-ww(3.95%)\n",
      "OpenEduTech/EduTechResearch 2.54 AliceCodeZhang(30.56%),foursevenlove(12.40%)\n",
      "X-lab2017/open-galaxy 2.15 tyn1998(66.67%),frank-zsy(21.13%)\n",
      "X-lab2017/od-api 1.08 zhicheng-ning(82.06%),tyn1998(17.94%)\n",
      "X-lab2017/open-research 0.81 will-ww(100.00%)\n",
      "X-lab2017/open-perf 0.65 bifenglin(64.39%),will-ww(35.61%)\n",
      "┌─────────┬──────────────────┬─────────────────────┬──────────┬───────┐\n",
      "│ (index) │      login       │      openrank       │  ratio   │ final │\n",
      "├─────────┼──────────────────┼─────────────────────┼──────────┼───────┤\n",
      "│    0    │    'will-ww'     │ 10.223930219511914  │ '20.04%' │ 4931  │\n",
      "│    1    │ 'zhicheng-ning'  │  8.388165014828049  │ '16.44%' │ 4045  │\n",
      "│    2    │    'tyn1998'     │  8.15319415632058   │ '15.98%' │ 3932  │\n",
      "│    3    │   'frank-zsy'    │ 6.2899683743115675  │ '12.33%' │ 3033  │\n",
      "│    4    │     'xgdyp'      │  3.190277307113291  │ '6.25%'  │ 1539  │\n",
      "│    5    │  'andyhuang18'   │ 2.6772839116773786  │ '5.25%'  │ 1291  │\n",
      "│    6    │ 'Zzzzzhuzhiwei'  │ 2.3499610229490666  │ '4.61%'  │ 1133  │\n",
      "│    7    │    'lhbvvvvv'    │ 1.8922739173575511  │ '3.71%'  │  913  │\n",
      "│    8    │    'wj23027'     │ 1.8414031378386593  │ '3.61%'  │  888  │\n",
      "│    9    │   'bifenglin'    │ 1.3897637149242896  │ '2.72%'  │  670  │\n",
      "│   10    │    'TieWay59'    │ 0.7872341110370842  │ '1.54%'  │  380  │\n",
      "│   11    │ 'AliceCodeZhang' │ 0.7762949868073442  │ '1.52%'  │  374  │\n",
      "│   12    │  'xiaoya-yaya'   │ 0.7736257270503631  │ '1.52%'  │  373  │\n",
      "│   13    │    'dlimeng'     │ 0.37114647402728734 │ '0.73%'  │  179  │\n",
      "│   14    │  'PureNatural'   │ 0.3309109199301015  │ '0.65%'  │  160  │\n",
      "│   15    │ 'foursevenlove'  │ 0.3150282192748112  │ '0.62%'  │  152  │\n",
      "│   16    │    'wxharry'     │  0.280332150458107  │ '0.55%'  │  135  │\n",
      "│   17    │    'longyanz'    │ 0.23288146979894994 │ '0.46%'  │  112  │\n",
      "│   18    │   'Bruce-Jay'    │ 0.22594796644691023 │ '0.44%'  │  109  │\n",
      "│   19    │   'yoyo-wu98'    │ 0.21697316006320166 │ '0.43%'  │  105  │\n",
      "│   20    │   'springyulu'   │ 0.1625589224366151  │ '0.32%'  │  78   │\n",
      "│   21    │    'birdflyi'    │ 0.14084915054102937 │ '0.28%'  │  68   │\n",
      "└─────────┴──────────────────┴─────────────────────┴──────────┴───────┘\n"
     ]
    }
   ],
   "source": [
    "calculateOpenRankDistribution(2023, 3, 24600);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "d9cf2856-b365-478c-8789-f25fadccd8be",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X-lab2017/oss101 30.57 will-ww(14.21%),TieWay59(13.54%),zhicheng-ning(5.26%),springyulu(1.41%),andyhuang18(1.16%),Zzzzzhuzhiwei(0.89%),Bruce-Jay(0.40%),wj23027(0.35%),tyn1998(0.33%),lhbvvvvv(0.26%)\n",
      "X-lab2017/open-digger 18.79 xgdyp(22.40%),frank-zsy(21.38%),birdflyi(7.70%),Zzzzzhuzhiwei(6.22%),tyn1998(4.62%),PureNatural(3.65%),Nliver(3.15%),will-ww(2.83%),bifenglin(2.59%),Bruce-Jay(1.43%),TieWay59(1.17%)\n",
      "hypertrons/hypertrons-crx 11.74 tyn1998(32.68%),wxharry(12.39%),lhbvvvvv(5.83%),andyhuang18(4.06%),Nliver(2.55%),wj23027(2.15%),zhicheng-ning(1.13%),will-ww(0.92%)\n",
      "X-lab2017/open-wonderland 6.79 zhicheng-ning(23.54%),tyn1998(21.84%),frank-zsy(15.42%),will-ww(15.06%),xiaoya-yaya(7.63%),birdflyi(5.45%),longyanz(4.91%),bifenglin(4.25%),andyhuang18(1.90%)\n",
      "X-lab2017/open-leaderboard 2.15 zhicheng-ning(40.71%),andyhuang18(28.73%),tyn1998(4.58%),will-ww(4.17%)\n",
      "hypertrons/hypertrons 1.93 frank-zsy(53.53%)\n",
      "X-lab2017/od-api 1.92 zhicheng-ning(82.20%),andyhuang18(10.59%)\n",
      "X-lab2017/open-research 0.67 xiaoya-yaya(47.50%),zhicheng-ning(27.19%),will-ww(13.89%),tyn1998(11.42%)\n",
      "┌─────────┬─────────────────┬─────────────────────┬──────────┬───────┐\n",
      "│ (index) │      login      │      openrank       │  ratio   │ final │\n",
      "├─────────┼─────────────────┼─────────────────────┼──────────┼───────┤\n",
      "│    0    │    'tyn1998'    │  6.462932149598931  │ '14.28%' │ 3656  │\n",
      "│    1    │    'will-ww'    │  6.188304100140379  │ '13.67%' │ 3500  │\n",
      "│    2    │   'frank-zsy'   │  6.09801312020031   │ '13.47%' │ 3449  │\n",
      "│    3    │ 'zhicheng-ning' │  5.976230761273768  │ '13.21%' │ 3381  │\n",
      "│    4    │   'TieWay59'    │  4.359494820286139  │ '9.63%'  │ 2466  │\n",
      "│    5    │     'xgdyp'     │  4.20961435186719   │ '9.30%'  │ 2381  │\n",
      "│    6    │   'birdflyi'    │ 1.8175420477276358  │ '4.02%'  │ 1028  │\n",
      "│    7    │  'andyhuang18'  │ 1.7818404040474036  │ '3.94%'  │ 1008  │\n",
      "│    8    │    'wxharry'    │  1.455158721048998  │ '3.22%'  │  823  │\n",
      "│    9    │ 'Zzzzzhuzhiwei' │ 1.4395904569017168  │ '3.18%'  │  814  │\n",
      "│   10    │    'Nliver'     │ 0.8907383969596406  │ '1.97%'  │  504  │\n",
      "│   11    │  'xiaoya-yaya'  │ 0.8365030868754044  │ '1.85%'  │  473  │\n",
      "│   12    │   'bifenglin'   │ 0.7757557961957422  │ '1.71%'  │  439  │\n",
      "│   13    │   'lhbvvvvv'    │ 0.7633177029126514  │ '1.69%'  │  432  │\n",
      "│   14    │  'PureNatural'  │ 0.6850403303110908  │ '1.51%'  │  387  │\n",
      "│   15    │  'springyulu'   │ 0.4319958377015818  │ '0.95%'  │  244  │\n",
      "│   16    │   'Bruce-Jay'   │ 0.3924745247945415  │ '0.87%'  │  222  │\n",
      "│   17    │    'wj23027'    │ 0.3591014708212187  │ '0.79%'  │  203  │\n",
      "│   18    │   'longyanz'    │ 0.33330269853697486 │ '0.74%'  │  189  │\n",
      "└─────────┴─────────────────┴─────────────────────┴──────────┴───────┘\n"
     ]
    }
   ],
   "source": [
    "calculateOpenRankDistribution(2023, 4, 25600);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "14dd7464-5175-44fb-a413-3be329ea2e2a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X-lab2017/open-digger 18.42 frank-zsy(27.79%),xgdyp(19.23%),PureNatural(7.39%),xiaoya-yaya(5.43%),Zzzzzhuzhiwei(5.12%),birdflyi(3.78%),tyn1998(2.92%),bifenglin(1.77%),zhicheng-ning(1.19%)\n",
      "hypertrons/hypertrons-crx 11.17 tyn1998(29.70%),andyhuang18(13.11%),wxharry(8.93%),lhbvvvvv(6.61%),wj23027(2.82%),frank-zsy(2.21%)\n",
      "X-lab2017/open-wonderland 3.87 zhicheng-ning(23.36%),tyn1998(20.43%),andyhuang18(14.63%),frank-zsy(11.13%),will-ww(9.12%),PureNatural(4.11%),lhbvvvvv(3.95%),bifenglin(2.61%)\n",
      "X-lab2017/open-research 2.98 bifenglin(40.98%),zhicheng-ning(14.84%),will-ww(11.81%),tyn1998(10.11%),birdflyi(8.31%),xgdyp(3.48%),longyanz(3.44%)\n",
      "X-lab2017/open-leaderboard 2.64 zhicheng-ning(38.33%),andyhuang18(33.80%),wj23027(17.52%)\n",
      "X-lab2017/od-api 1.63 zhicheng-ning(100.00%)\n",
      "X-lab2017/gi-assets-xlab 0.61 tyn1998(61.82%),wj23027(19.09%)\n",
      "┌─────────┬─────────────────┬─────────────────────┬──────────┬───────┐\n",
      "│ (index) │      login      │      openrank       │  ratio   │ final │\n",
      "├─────────┼─────────────────┼─────────────────────┼──────────┼───────┤\n",
      "│    0    │   'frank-zsy'   │  5.79598966576729   │ '18.38%' │ 2812  │\n",
      "│    1    │    'tyn1998'    │  5.324434955377903  │ '16.88%' │ 2583  │\n",
      "│    2    │ 'zhicheng-ning' │  4.206579091979894  │ '13.34%' │ 2041  │\n",
      "│    3    │     'xgdyp'     │ 3.6453278345562787  │ '11.56%' │ 1768  │\n",
      "│    4    │  'andyhuang18'  │ 2.9226034321931396  │ '9.27%'  │ 1418  │\n",
      "│    5    │   'bifenglin'   │ 1.6479073680786673  │ '5.22%'  │  799  │\n",
      "│    6    │  'PureNatural'  │ 1.5208285504663246  │ '4.82%'  │  738  │\n",
      "│    7    │  'xiaoya-yaya'  │ 0.9995737993501486  │ '3.17%'  │  485  │\n",
      "│    8    │    'wxharry'    │ 0.9972829929861752  │ '3.16%'  │  484  │\n",
      "│    9    │   'birdflyi'    │ 0.9437301577363377  │ '2.99%'  │  458  │\n",
      "│   10    │ 'Zzzzzhuzhiwei' │ 0.9425027870376611  │ '2.99%'  │  457  │\n",
      "│   11    │    'wj23027'    │ 0.8936509198485169  │ '2.83%'  │  434  │\n",
      "│   12    │   'lhbvvvvv'    │ 0.8910239587618639  │ '2.83%'  │  432  │\n",
      "│   13    │    'will-ww'    │ 0.7049179726698394  │ '2.24%'  │  342  │\n",
      "│   14    │   'longyanz'    │ 0.10258311249572906 │ '0.33%'  │  50   │\n",
      "└─────────┴─────────────────┴─────────────────────┴──────────┴───────┘\n"
     ]
    }
   ],
   "source": [
    "calculateOpenRankDistribution(2023, 5, 15300);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "01446bca-a4b4-4311-ae4b-0065ebb776bb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X-lab2017/open-digger 14.3 xgdyp(24.23%),Zzzzzhuzhiwei(17.59%),frank-zsy(14.22%),birdflyi(8.71%),PureNatural(6.36%),will-ww(4.96%),bifenglin(3.68%),tyn1998(3.44%)\n",
      "hypertrons/hypertrons-crx 8.15 tyn1998(19.69%),wxharry(16.81%),andyhuang18(13.96%),lhbvvvvv(3.21%),Zzzzzhuzhiwei(3.01%)\n",
      "X-lab2017/open-research 6.45 will-ww(25.07%),bifenglin(21.40%),xiaoya-yaya(15.65%),zhicheng-ning(7.01%),tyn1998(5.39%),yoyo-wu98(4.07%),longyanz(3.66%),TieWay59(3.63%),PureNatural(3.38%),Zzzzzhuzhiwei(2.40%),xgdyp(2.26%),wj23027(2.18%)\n",
      "X-lab2017/open-leaderboard 3.55 andyhuang18(35.96%),tyn1998(26.39%),wj23027(18.86%)\n",
      "X-lab2017/gi-assets-xlab 3.28 tyn1998(46.76%),wj23027(4.54%),andyhuang18(4.27%),frank-zsy(2.50%)\n",
      "X-lab2017/open-wonderland 2.68 tyn1998(34.85%),andyhuang18(25.31%),will-ww(21.53%),wj23027(3.42%),PureNatural(3.32%),lhbvvvvv(3.26%),birdflyi(3.04%),bifenglin(2.83%),Zzzzzhuzhiwei(2.44%)\n",
      "OpenEduTech/EduTechResearch 2.36 lijinlus(40.24%),will-ww(32.29%),AliceCodeZhang(10.90%),tvbboy(8.29%)\n",
      "X-lab2017/open-perf 0.87 bifenglin(52.34%),will-ww(34.42%),birdflyi(13.24%)\n",
      "┌─────────┬──────────────────┬─────────────────────┬──────────┬───────┐\n",
      "│ (index) │      login       │      openrank       │  ratio   │ final │\n",
      "├─────────┼──────────────────┼─────────────────────┼──────────┼───────┤\n",
      "│    0    │    'tyn1998'     │ 5.8480405491844305  │ '17.61%' │ 2623  │\n",
      "│    1    │    'will-ww'     │  3.96562142790942   │ '11.94%' │ 1779  │\n",
      "│    2    │     'xgdyp'      │  3.610572718457601  │ '10.87%' │ 1620  │\n",
      "│    3    │  'andyhuang18'   │ 3.2325555933742853  │ '9.73%'  │ 1450  │\n",
      "│    4    │ 'Zzzzzhuzhiwei'  │ 2.9809532128948164  │ '8.97%'  │ 1337  │\n",
      "│    5    │   'bifenglin'    │  2.438185008634028  │ '7.34%'  │ 1094  │\n",
      "│    6    │   'frank-zsy'    │ 2.1158355704630933  │ '6.37%'  │  949  │\n",
      "│    7    │    'birdflyi'    │ 1.4419823072751359  │ '4.34%'  │  647  │\n",
      "│    8    │    'wxharry'     │ 1.3696721236354896  │ '4.12%'  │  614  │\n",
      "│    9    │  'PureNatural'   │  1.216346923613589  │ '3.66%'  │  546  │\n",
      "│   10    │    'wj23027'     │ 1.0509484639333841  │ '3.16%'  │  471  │\n",
      "│   11    │  'xiaoya-yaya'   │ 1.0092972081658973  │ '3.04%'  │  453  │\n",
      "│   12    │    'lijinlus'    │ 0.9495936595130114  │ '2.86%'  │  426  │\n",
      "│   13    │ 'zhicheng-ning'  │ 0.4521290030228621  │ '1.36%'  │  203  │\n",
      "│   14    │    'lhbvvvvv'    │ 0.3489705087842021  │ '1.05%'  │  157  │\n",
      "│   15    │   'yoyo-wu98'    │ 0.2622674048638006  │ '0.79%'  │  118  │\n",
      "│   16    │ 'AliceCodeZhang' │ 0.2573495849462304  │ '0.77%'  │  115  │\n",
      "│   17    │    'longyanz'    │ 0.23616715905469918 │ '0.71%'  │  106  │\n",
      "│   18    │    'TieWay59'    │ 0.2340643353685563  │ '0.70%'  │  105  │\n",
      "│   19    │     'tvbboy'     │ 0.19555365685178433 │ '0.59%'  │  88   │\n",
      "└─────────┴──────────────────┴─────────────────────┴──────────┴───────┘\n"
     ]
    }
   ],
   "source": [
    "calculateOpenRankDistribution(2023, 6, 14900);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "32667164-e4bc-4337-97b1-4446be76c9f2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X-lab2017/open-digger 14.75 frank-zsy(28.91%),xgdyp(18.65%),Zzzzzhuzhiwei(8.36%),birdflyi(7.26%),PureNatural(5.79%),lhbvvvvv(5.30%),bifenglin(5.28%),will-ww(1.96%),tyn1998(1.56%)\n",
      "X-lab2017/open-wonderland 8.49 will-ww(29.10%),bifenglin(16.50%),zhicheng-ning(9.14%),andyhuang18(8.85%),frank-zsy(5.61%),tyn1998(5.04%),xgdyp(4.89%),longyanz(4.57%),xiaoya-yaya(3.99%),PureNatural(3.36%),wj23027(1.65%),yoyo-wu98(1.57%),TieWay59(1.24%)\n",
      "hypertrons/hypertrons-crx 8.17 wxharry(20.22%),tyn1998(18.56%),andyhuang18(13.06%),lhbvvvvv(7.68%),Zzzzzhuzhiwei(6.38%)\n",
      "X-lab2017/gi-assets-xlab 4.55 bifenglin(15.60%),tyn1998(14.99%),wj23027(8.03%)\n",
      "X-lab2017/open-research 4.38 bifenglin(33.18%),will-ww(31.82%),xiaoya-yaya(19.18%),andyhuang18(15.82%)\n",
      "X-lab2017/open-leaderboard 3.83 andyhuang18(35.81%),zhicheng-ning(23.38%),wj23027(19.01%),tyn1998(9.71%),will-ww(6.53%),frank-zsy(5.57%)\n",
      "X-lab2017/open-perf 0.96 will-ww(73.74%),bifenglin(26.26%)\n",
      "┌─────────┬─────────────────┬─────────────────────┬──────────┬───────┐\n",
      "│ (index) │      login      │      openrank       │  ratio   │ final │\n",
      "├─────────┼─────────────────┼─────────────────────┼──────────┼───────┤\n",
      "│    0    │    'will-ww'    │  5.112260754100516  │ '13.94%' │ 2286  │\n",
      "│    1    │   'frank-zsy'   │  4.953620264320518  │ '13.51%' │ 2215  │\n",
      "│    2    │   'bifenglin'   │  4.594834732002363  │ '12.53%' │ 2055  │\n",
      "│    3    │  'andyhuang18'  │ 3.8829155620876477  │ '10.59%' │ 1736  │\n",
      "│    4    │    'tyn1998'    │ 3.2282090388525173  │ '8.80%'  │ 1444  │\n",
      "│    5    │     'xgdyp'     │  3.166476971386376  │ '8.63%'  │ 1416  │\n",
      "│    6    │ 'Zzzzzhuzhiwei' │ 1.7541870892531355  │ '4.78%'  │  784  │\n",
      "│    7    │ 'zhicheng-ning' │ 1.6711511572269468  │ '4.56%'  │  747  │\n",
      "│    8    │    'wxharry'    │ 1.6521141746604728  │ '4.50%'  │  739  │\n",
      "│    9    │   'lhbvvvvv'    │  1.409878115912902  │ '3.84%'  │  630  │\n",
      "│   10    │    'wj23027'    │ 1.2336975705130087  │ '3.36%'  │  552  │\n",
      "│   11    │  'xiaoya-yaya'  │ 1.1790490517841836  │ '3.21%'  │  527  │\n",
      "│   12    │  'PureNatural'  │  1.139191778421944  │ '3.11%'  │  509  │\n",
      "│   13    │   'birdflyi'    │ 1.0705157676781103  │ '2.92%'  │  479  │\n",
      "│   14    │   'longyanz'    │ 0.3880340197692003  │ '1.06%'  │  174  │\n",
      "│   15    │   'yoyo-wu98'   │ 0.13292253833388046 │ '0.36%'  │  59   │\n",
      "│   16    │   'TieWay59'    │ 0.1053734073921797  │ '0.29%'  │  47   │\n",
      "└─────────┴─────────────────┴─────────────────────┴──────────┴───────┘\n"
     ]
    }
   ],
   "source": [
    "calculateOpenRankDistribution(2023, 7, 16400);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "d6a33e18-5d12-4903-ba39-2838510a14d8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X-lab2017/open-digger 9.83 frank-zsy(34.19%),xgdyp(17.69%),Zzzzzhuzhiwei(9.63%),lhbvvvvv(6.97%),birdflyi(5.49%),PureNatural(4.54%),xiaoya-yaya(2.51%),tyn1998(1.76%)\n",
      "hypertrons/hypertrons-crx 8.54 tyn1998(24.23%),wxharry(16.38%),andyhuang18(12.74%),TieWay59(7.01%),lhbvvvvv(6.95%),frank-zsy(6.21%),wj23027(3.74%),will-ww(2.47%)\n",
      "X-lab2017/open-wonderland 5 bifenglin(34.34%),will-ww(22.94%),tyn1998(13.64%),zhicheng-ning(9.67%),xgdyp(5.55%),xiaoya-yaya(5.23%),yoyo-wu98(4.37%),TieWay59(4.25%)\n",
      "X-lab2017/open-research 1.6 will-ww(79.62%),TieWay59(20.38%)\n",
      "X-lab2017/open-perf 1.56 will-ww(46.46%),PureNatural(43.60%),bifenglin(9.94%)\n",
      "X-lab2017/open-leaderboard 1.4 tyn1998(100.00%)\n",
      "┌─────────┬─────────────────┬─────────────────────┬──────────┬───────┐\n",
      "│ (index) │      login      │      openrank       │  ratio   │ final │\n",
      "├─────────┼─────────────────┼─────────────────────┼──────────┼───────┤\n",
      "│    0    │    'tyn1998'    │ 4.3244357672823615  │ '17.65%' │ 2523  │\n",
      "│    1    │   'frank-zsy'   │  3.891356570030305  │ '15.88%' │ 2271  │\n",
      "│    2    │    'will-ww'    │ 3.3561951807335464  │ '13.69%' │ 1958  │\n",
      "│    3    │     'xgdyp'     │ 2.0170416935746562  │ '8.23%'  │ 1177  │\n",
      "│    4    │   'bifenglin'   │  1.872199298902984  │ '7.64%'  │ 1092  │\n",
      "│    5    │    'wxharry'    │ 1.3989535583306894  │ '5.71%'  │  816  │\n",
      "│    6    │   'lhbvvvvv'    │ 1.2790097418172728  │ '5.22%'  │  746  │\n",
      "│    7    │   'TieWay59'    │ 1.1369973584430908  │ '4.64%'  │  663  │\n",
      "│    8    │  'PureNatural'  │  1.126215506781734  │ '4.60%'  │  657  │\n",
      "│    9    │  'andyhuang18'  │ 1.0878553990754192  │ '4.44%'  │  635  │\n",
      "│   10    │ 'Zzzzzhuzhiwei' │ 0.9465953895371966  │ '3.86%'  │  552  │\n",
      "│   11    │   'birdflyi'    │ 0.5400117789466603  │ '2.20%'  │  315  │\n",
      "│   12    │  'xiaoya-yaya'  │ 0.5083953289868554  │ '2.07%'  │  297  │\n",
      "│   13    │ 'zhicheng-ning' │ 0.48373101333840995 │ '1.97%'  │  282  │\n",
      "│   14    │    'wj23027'    │  0.319688232801499  │ '1.30%'  │  187  │\n",
      "│   15    │   'yoyo-wu98'   │ 0.2183385228308624  │ '0.89%'  │  127  │\n",
      "└─────────┴─────────────────┴─────────────────────┴──────────┴───────┘\n"
     ]
    }
   ],
   "source": [
    "calculateOpenRankDistribution(2023, 8, 14300);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "915cb1db-7d88-4dc0-ac96-e5475c2983fd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "hypertrons/hypertrons-crx 10.87 tyn1998(26.58%),lhbvvvvv(15.19%),TieWay59(9.06%),wxharry(8.87%),andyhuang18(8.65%),wj23027(5.34%),Tenth-crew(2.09%),wangyantong2000(1.79%),frank-zsy(1.72%),Zzzzzhuzhiwei(1.68%),zhaosj975(1.57%)\n",
      "X-lab2017/open-digger 8.59 frank-zsy(23.03%),xgdyp(15.30%),Zzzzzhuzhiwei(14.76%),PureNatural(8.91%),birdflyi(5.26%),lhbvvvvv(5.03%),bifenglin(3.25%),will-ww(2.52%),zhaosj975(1.53%),tyn1998(1.42%),Tenth-crew(1.11%),wangyantong2000(1.11%)\n",
      "X-lab2017/open-wonderland 5.32 will-ww(39.94%),bifenglin(18.38%),tyn1998(13.98%),frank-zsy(11.76%),andyhuang18(7.13%),PureNatural(4.62%),xgdyp(2.33%),birdflyi(1.86%)\n",
      "X-lab2017/open-research 1.84 will-ww(44.82%),bifenglin(14.40%),PureNatural(14.22%),Tenth-crew(9.90%),birdflyi(9.08%),TieWay59(7.57%)\n",
      "OpenEduTech/EduTechResearch 0.85 lijinlus(74.03%),will-ww(25.97%)\n",
      "X-lab2017/open-perf 0.78 bifenglin(100.00%)\n",
      "X-lab2017/open-leaderboard 0.57 TieWay59(43.35%)\n",
      "┌─────────┬───────────────────┬────────────────────┬──────────┬───────┐\n",
      "│ (index) │       login       │      openrank      │  ratio   │ final │\n",
      "├─────────┼───────────────────┼────────────────────┼──────────┼───────┤\n",
      "│    0    │     'tyn1998'     │ 3.7545914883034768 │ '14.92%' │ 1985  │\n",
      "│    1    │     'will-ww'     │ 3.386515944521152  │ '13.46%' │ 1790  │\n",
      "│    2    │    'frank-zsy'    │ 2.7906448148243577 │ '11.09%' │ 1475  │\n",
      "│    3    │    'bifenglin'    │ 2.302134384261575  │ '9.15%'  │ 1217  │\n",
      "│    4    │    'lhbvvvvv'     │ 2.083271867463001  │ '8.28%'  │ 1101  │\n",
      "│    5    │  'Zzzzzhuzhiwei'  │ 1.450750466686483  │ '5.77%'  │  767  │\n",
      "│    6    │      'xgdyp'      │ 1.438172126096692  │ '5.72%'  │  760  │\n",
      "│    7    │    'TieWay59'     │ 1.3717285684479052 │ '5.45%'  │  725  │\n",
      "│    8    │   'andyhuang18'   │ 1.319713828747095  │ '5.25%'  │  698  │\n",
      "│    9    │   'PureNatural'   │ 1.272767132047168  │ '5.06%'  │  673  │\n",
      "│   10    │     'wxharry'     │ 0.9644383630498179 │ '3.83%'  │  510  │\n",
      "│   11    │    'birdflyi'     │ 0.7178905335123058 │ '2.85%'  │  380  │\n",
      "│   12    │    'lijinlus'     │ 0.6292935237573954 │ '2.50%'  │  333  │\n",
      "│   13    │     'wj23027'     │ 0.5799342380088792 │ '2.31%'  │  307  │\n",
      "│   14    │   'Tenth-crew'    │ 0.5047669485829887 │ '2.01%'  │  267  │\n",
      "│   15    │    'zhaosj975'    │ 0.3013168623482564 │ '1.20%'  │  159  │\n",
      "│   16    │ 'wangyantong2000' │ 0.2894187069368743 │ '1.15%'  │  153  │\n",
      "└─────────┴───────────────────┴────────────────────┴──────────┴───────┘\n"
     ]
    }
   ],
   "source": [
    "calculateOpenRankDistribution(2023, 9, 13300);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "40198f29-4b1c-4e91-9bb8-821fba900ace",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "JavaScript (Node.js)",
   "language": "javascript",
   "name": "javascript"
  },
  "language_info": {
   "file_extension": ".js",
   "mimetype": "application/javascript",
   "name": "javascript",
   "version": "16.13.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
